From fc7c643b21cceb90954ee492354b422b700bf569 Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 4 Oct 2006 09:10:17 +0100 Subject: [PATCH] [XEN] Never crash machine on int3 traps. Do not enter debugger on dom0 shutdown unless dom0 crashed. Signed-off-by: Keir Fraser --- xen/common/shutdown.c | 3 +-- xen/include/asm-x86/debugger.h | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/xen/common/shutdown.c b/xen/common/shutdown.c index 1baea16205..a994e14bfc 100644 --- a/xen/common/shutdown.c +++ b/xen/common/shutdown.c @@ -30,8 +30,6 @@ static void maybe_reboot(void) void dom0_shutdown(u8 reason) { - debugger_trap_immediate(); - switch ( reason ) { case SHUTDOWN_poweroff: @@ -43,6 +41,7 @@ void dom0_shutdown(u8 reason) case SHUTDOWN_crash: { + debugger_trap_immediate(); printk("Domain 0 crashed: "); maybe_reboot(); break; /* not reached */ diff --git a/xen/include/asm-x86/debugger.h b/xen/include/asm-x86/debugger.h index 743dc2d8e5..b5256523e9 100644 --- a/xen/include/asm-x86/debugger.h +++ b/xen/include/asm-x86/debugger.h @@ -46,7 +46,8 @@ static inline int debugger_trap_fatal( unsigned int vector, struct cpu_user_regs *regs) { - return (__trap_to_gdb(regs, vector) == 0); + int rc = __trap_to_gdb(regs, vector); + return ((rc == 0) || (vector == TRAP_int3)); } /* Int3 is a trivial way to gather cpu_user_regs context. */ -- 2.30.2